package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	strContains()

	strJoin()

	strIndex()

	strRepeat()

	strReplace()

	strSplit()

	strTrim()

	strFields()

	convertToString()

	stringConvertToOthers()
}

func stringConvertToOthers() {

	str := "true"
	//1、将字符串转为bool类型数据,只能将"true","false"转换为bool类型数据,字符串里有其它无效的数据,会作为false
	res, _ := strconv.ParseBool(str)
	fmt.Println(res)

	//2、将字符串转为整型数据
	str1:="1111011"
	res1,_:=strconv.ParseInt(str1,2,64)
	fmt.Println("二进制字符串转为10进制整型为:",res1)

	//3、将字符串转为整型数据
	str2:="123"
	res2,_:=strconv.Atoi(str2)
	fmt.Println(res2)

	//4、将字符串转为浮点型
	str3:="3.14"
	res3,_:=strconv.ParseFloat(str3,64)
	fmt.Println(res3)
}

func convertToString() {
	//将其它类型转成字符串

	//1、将bool类型转为字符串
	s := strconv.FormatBool(false)
	fmt.Println(s)

	//2、将整型转为字符串
	s1 := strconv.FormatInt(123, 10)
	fmt.Println(s1)

	//3、将浮点型转为字符串类型
	s2 := strconv.FormatFloat(3.126, 'f', 2, 64)
	fmt.Println(s2)
}

//去掉字符串中的空格,并返回有效数据的切片
func strFields() {
	str := "  are you  ok"
	res := strings.Fields(str)
	fmt.Println(res)
}

//去掉字符串前后的指定字符
func strTrim() {
	str := "#hello#"
	res := strings.Trim(str, "#")
	fmt.Println(res)
}

//判断字符串中是否含有某字符串
func strContains() {
	str := "hello world"
	res := strings.Contains(str, "he")
	fmt.Println(res)
}

//将字符数组按某个字符串拼接在一起组成字符串
func strJoin() {
	a := []string{"foo", "bar"}
	b := strings.Join(a, "|")
	fmt.Println(b)
}

//获取某个字符串中指定字符的位置
func strIndex() {
	str := "上海步行街"
	i := strings.Index(str, "步行街")
	fmt.Println(i)
}

//重复某个字符串
func strRepeat() {
	str := "门前大桥下"
	s := strings.Repeat(str, 3)
	fmt.Println(s)
}

//替换某个字符串中的指定字符串
func strReplace() {
	str := "helloworld"
	res := strings.Replace(str, "l", "a", -1)
	fmt.Println(res)
}

//将字符串按照指定字符串分隔为切片
func strSplit() {
	str := "hello|foo|bar"
	res := strings.Split(str, "|")
	fmt.Println(res)

}
